package com.tyut.musicdreamer.framework.starter.storage.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.List;

/**
 * 存储配置属性
 */
@Data
@ConfigurationProperties(prefix = "musicdreamer.storage")
public class StorageProperties {
    /**
     * 存储类型，支持：local、oss
     */
    private String type = "local";
    
    /**
     * 允许的文件类型
     */
    private List<String> allowedTypes;
    
    /**
     * 最大文件大小（字节）
     */
    private Long maxSize;
    
    /**
     * 阿里云OSS配置
     */
    private OssConfig oss = new OssConfig();
    
    /**
     * 本地存储配置
     */
    private LocalConfig local = new LocalConfig();
    
    /**
     * 定时任务配置
     */
    private TaskConfig task = new TaskConfig();
    
    /**
     * 阿里云OSS配置
     */
    @Data
    public static class OssConfig {
        /**
         * 访问密钥ID
         */
        private String accessKeyId;
        
        /**
         * 访问密钥秘钥
         */
        private String accessKeySecret;
        
        /**
         * 端点
         */
        private String endpoint;
        
        /**
         * 存储桶名称
         */
        private String bucketName;
        
        /**
         * CDN域名
         */
        private String cdnDomain;
    }
    
    /**
     * 本地存储配置
     */
    @Data
    public static class LocalConfig {
        /**
         * 基础路径
         */
        private String basePath = "upload";
        
        /**
         * URL前缀
         */
        private String urlPrefix;
    }
    
    /**
     * 定时任务配置
     */
    @Data
    public static class TaskConfig {
        /**
         * 是否启用存储类别更新任务
         */
        private boolean enableStorageClassUpdate = true;
        
        /**
         * 存储类别更新任务Cron表达式
         */
        private String storageClassUpdateCron = "0 0 2 * * ?";
    }
} 